home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Tech Arsenal 1
/
Tech Arsenal (Arsenal Computer).ISO
/
tek-13
/
mewin10.zip
/
README
< prev
Wrap
Text File
|
1992-04-17
|
16KB
|
371 lines
MicroEMACS 3.11c for Windows, update 1.0 by Pierre Perret
======================================== April 17, 1992
Files in this archive:
---------------------
README this file
MEWIN.EXE MS-Windows executable
EMACS.RC sample start-up macro tailored for the Windows environment
MDI.CMD macro file for those who like to have one file per screen
CUA.CMD macro file for CUA-like mouse and keyboard behaviour
EMACS.INI EMACS-related information to be put into WIN.INI
DOSBOX.PIF |
DOSEXEC.PIF | PIF files used when launching DOS sessions from EMACS
INSTALLATION
------------
Put the EMACS.RC, MDI.CMD and CUA.CMD files in the same directory as
MEWIN.EXE (this directory does not need to be mentionned in the DOS
PATH). Copy the contents of EMACS.INI into your WIN.INI file and edit
the DosBox and DosExec entries to reflect the location of the DOSBOX.PIF
and DOSEXEC.PIF files (for instance, the directory where MEWIN.EXE
resides). Once its contents have been copied into WIN.INI, EMACS.INI is
no longer needed.
EMACS.RC and MDI.CMD are setup for displays that can accomodate a text
width of at least 100 character. If you have a pure VGA or lower
resolution display, you should remove the lines:
100 change-screen-width
and
80 change-screen-width
in, respectively, EMACS.RC and MDI.CMD. For a consistent and wide
display area, you may also want to add the line:
InitialSize=optimized
into WIN.INI, within the [MicroEMACS] section.
Other files:
-----------
MicroEMACS normally comes with documentation and a bunch of scripts (aka
macros or "command files"). They are not supplied in this archive, but
are available separately. The files for release 3.11 are the ones you
need and they are available from a number of sources, including:
- COMPUSERVE, forum IBMAPP, library 1 for the executables (UE311I.EXE),
official 3.11 release readme file (UE311.TXT), reference manual
(UE311D.ZIP) and macros (UE311M.ZIP). forum IBMPRO, library 3 for the
official 3.11 sources (UE311C.ZIP, UE311H.ZIP and UE311K.ZIP).
- BIX, in the editors conference's listing area.
- various Internet hosts among which wuarchive and simtel20.
- The Programmer's Room BBS (see below)
The sources for this port are available in a separate archive. They are
in C language and geared to be compiled by Borland C++ 3.0 or Turbo C++
3.0 (Windows-hosted compiler).
An exhaustive on-line documentation (in Winhelp format) is in the works
and will be distributed in a separate archive as soon as it is complete.
HOW TO REPORT PROBLEMS OR SUBMIT SUGGESTIONS
--------------------------------------------
The prefered way to reach me to discuss about this program is through
CompuServe, in the Shareware/Freeware section of the WINADV forum or on
BIX in the editors conference, in the emacs topic. My CompuServe ID is
73757,2337 and my BIX Id is pierre_perret. You can also send Email
directly to those accounts, but forum/conference transactions have the
advantage of being viewable by others.
If you do not use CompuServe or BIX, but have Internet access, you can
exchange Internet mail with me by sending it to pap@myths.az05.bull.com
Other channels include:
- Phone:
(602) 862-5448 at my office (9am - 5pm)
(Note: hours given for Mountain Standard Time, no daylight savings)
- US mail: Pierre Perret
4326 W Michigan Avenue
Glendale Az 85308
- The Programmer's Room BBS at (317) 742-5533 (300/1200/2400 and 9600
[Hayes V series only], no parity, 8 databits, no stop bits). However,
since this is a long distance call for me, I do not check-in very often.
I am registered under my real name (Pierre Perret).
Please note that I am the author of this Windows port, not the author of
MicroEMACS itself. Problems that also occur with the standard 3.11
editor should be reported to Dan Lawrence on the Programmer's Room BBS.
USAGE NOTES
-----------
In doing this port, I have tried to preserve as much as possible the
MicroEMACS way of doing things, for the sake of minimizing changes in
the editor core...
VOCABULARY:
MicroEMACS calls "screens" what really should be called "MDI windows"
and calls "windows" what should be called "panes". Changing those
definitions in the Windows implementation would impact all the commands
that deal with "screens" and "windows" and would therefore break most
macros.
INPUT TO THE MESSAGE LINE:
Depending on the particular command that requested such input,
MicroEMACS implements varying character handling methods that are
definitely not CUA-compliant.
TEXT SELECTION:
Contrary to CUA standards, selections are not highlited (this is
tough to implement since the core editor does not establish a clear
relation between the "region" and the position of the concerned
characters on the screen).
MOUSE HANDLING:
Due to its mainframe heritage, and also it's capability to redefine
mouse behavior by macros, Emacs' mouse handling differs significantly
from that of other Windows applications (CUA-compliant ones):
- Emacs's notion of a double click is completely unrelated to the time
elapsed between two clicks. A double click is considered such if the
caret is at the same screen coordinates on both clicks.
- dragging with the left button pressed does not select text, it drags
the text across the viewport, horizontally or vertically.
- dragging with the right button pressed selects the text and:
1) makes it a "region"
2) copies it to the "kill buffer"
3) if a double click occurs at the end of the drag, the selected region
is deleted
- clicking with the right button (without dragging) inserts the contents
of the kill buffer at that location.
The CUA.CMD file included with this package, loaded by the included
EMACS.RC, contains macros that modify the standard MicroEMACS mouse
bindings to provide a CUA-like interface.
CURRENT WORKING DIRECTORY:
The current working directory and selected drive is always set to the
file path associated with the current "window". If that path is not an
absolute one, it is dependant upon the previously visited directory
paths (including the directory field that appeared in a file dialog box,
even if the operation was cancelled).
EXTENDED CHARACTERS:
The Windows environment is quite unlike DOS when translating keypresses
into characters. This port of MicroEMACS to Windows tries to give a mostly
DOS-like feel to the user. However, there is one area where it seems
hopeless: extended characters. These are the characters that do not
correspond to an actual key on the keyboard. Under DOS, they are
obtained by maintaining the ALT key down, while "dialing" the decimal
value of the desired character on the numeric keypad, using the "IBM-PC
Extended Character Set" table.
Unfortunately, Windows is very much slanted towards ANSI and, as a
result, the keyboard driver wants to deliver ASCII character codes not
from the despised IBM-PC set, but rather from the ANSI table. For
instance, the code for the Mu (or Micro) greek sign is 181 in ANSI and
230 in IBM-PCese.
"Well, who cares ?" you say, "the table comes into play only when the
characters are actually displayed on the screen, so the font's character
set is what matters".
NOT!
The keyboard driver designers must have concluded that users had rote
knowledge of the IBM-PC table and could not possibly be asked to look
upon the wonderful but mysterious ANSI table. So, they went out of their
way to provide a translation! What it boils down to is this: if you dial
say, 230 on the numeric keypad while holding ALT down, a Windows
application will not receive code 230, but code 181, which is the
equivalent character in the ANSI table! Worse, the mapping is full of
holes, so the following dialing codes: 158, 159, 176 to 224, 226, 228,
229, 231 to 240, 242 to 247, 249 to 252 and 255, are all given back to
the hapless application as code 95 (underscore)!
The net result:
If you display your text in an ANSI font and use the IBM-PC table to
dial the extended character codes, you will see the expected rune appear
on the display (unless you happen to dial into one of the holes
mentionned above in which case an underscore is all you will get). Of
course, the code saved in the file will not exactly be what you dialed!
On the other hand, if you are using the OEM font (which uses the IBM-PC
character set), or if you read the resulting file under a DOS editor, it
may look a bit weird.
FEATURES OF THIS WINDOWS PORT (over what is standard in MicroEMACS 3.11c)
-----------------------------
MENUS:
I have put most of the functions available in MicroEMACS into a set of
menus (some with nested popups). There are a few MicroEMACS functions
that would not make much sense in a menu and have therefore been
excluded. A few menu items have no equivalent function in the MicroEMACS
macro language.
In addition to the standard Windows convention of appending an ellipsis
to menus items that beget a dialog box, I have used the following: a
colon is appended to menus items that require a user response on the
message line and an equal sign is inserted in front of items that
require an argument to have been entered (by META + digits).
Key bindings are displayed in the menus, using the Windows format for
key descriptions instead of the MicroEMACS format (which, for some
function keys, can be quite cryptic).
Some menu items may appear grayed if the context is such that they are
unuseable.
For those who recompile this program with source-level debugging, there
is an extra menu item "Break to debugger" that can be added by a small
change at the end of mswmenu.h. This menu item can be useful to give
control to the debugger when, for instance, you need to set breakpoints
before trying some misbehaving feature. In the released executable, this
menu item has been disabled.
ALT KEY HANDLING:
In Windows applications, the Alt key can be used in combination with a
letter or digit to pull down a menu from the menu bar. In MicroEMACS,
bindings have the priority over those menu bar accelerators. Thus, if
there is a conflict between a menu-bar accelerator and an emacs binding,
the accelerator looses. On the other hand, trying to create a new
binding interactively by simply invoking bind-to-key or macro-to-key
will not be possible if the desired binding matches a menu-bar
accelerator.
Note that a menu can still be invoked from the keyboard, even when the
accelerator conflict with a binding, by pressing AND releasing the Alt
key and THEN hitting the accelerator character.
"NOT QUIESCENT" STATE:
If a macro is executing, most menu selections cannot be processed (the
editor is said to be in the "not quiescent" state) because a lot of
MicroEMACS functions are not quite reentrant. This is reflected by a
change of the mouse cursor from a pointing finger to a color-inverting
arrow.
$SRES VARIABLE:
To allow Windows-aware macros, the $sres is set to "MSWIN" and cannot
be modified (trying to set it has no effect, but it returns no error).
NEW MICROEMACS FUNCTIONS:
tile-screens
cascade-screens
minimize-screen
maximize-screen
These functions allow shuffling of screens (aka MDI windows) from
EMACS macros.
rename-screen
This one allows you to change the name of the current screen (that
type of command is not of much use under the other versions of EMACS
since screen names are rarely displayed).
clip-region
cut-region
insert-clip
These supplement copy-region, kill-region and yank, but instead of
addressing the kill buffer, they address the Windows clipboard.
bind-to-menu
macro-to-menu
unbind-menu
These functions allow dynamic modification of the menus. An example
of their use appears in the EMACS.RC sample startup file.
help-engine
This allows a macro to invoke the Windows Help engine. Look for
a couple of examples in the supplied EMACS.RC.
LONG OPERATIONS:
When performing long operations (macros with loops, searches, file
IOs...), this program lets other Windows applications have a piece of
the CPU pie by yielding at regular intervals (see the TimeSlice profile
value in EMACS.INI). During these periods, a few menu options are still
available, among which quitting (Exit in File menu or Close in system
menu). Note that if the user attempts to quit while a file is being
written out, a confirmation is required (the same happens if there are
changed buffers).
In Windows, yielding is only possible if the application has exhausted
its input message queue. As a consequence, EMACS cannot ignore typeahead
while attempting to yield. One particular side effect of this is that if
you do a ^X^F (find-file) followed by <name_of_file><RC> while a lengthy
operation is going on, EMACS absorbs those keystrokes and has to refeed
them into the "Find file" dialog box when it eventually pops up. I have
implemented a mechanism for dealing with this, but it handles only
simple ASCII characters and just throws away any other keystroke (for
instance, arrow keys are not forwarded to the dialog box).
FONTS:
The Font item in the Screen menu brings up a dialog box that allows the
user to select a fixed font to be used. This font description can be
saved in WIN.INI so that subsequent invokations of MicroEMACS use it at
startup.
LOCAL AND GLOBAL MODES:
The Mode and Global mode items of the File menu bring up dialog boxes
that offer a user-friendly way of setting the CMODE, VIEW, EXACT, MAGIC,
etc... modes.
FILE DIALOG BOX:
Instead of using a message line interface with attempted completion of
file names, this program pops up a dialog box whenever a filename has to
be supplied by the user. This is an attempt at CUA compliance. It also
has the side effect of supplying the editor with fully qualified
pathnames. The handy filename completion feature has been implemented as
well, with the addition of auto-scrolling of the filename list.
HELP SYSTEM:
The first four items in the Help menu are intended to load the MEWIN.HLP
help file into the Windows help engine. Building this file has been a
major undertaking that, I must admit, I had underestimated (never done
any hypertext documents before). At this time, it is still incomplete
and a large number of the MicroEMACS command descriptions are missing.
Hopefully, I will manage to release it within a month or so...
------------------------------------------------------------------------
Disclaimer and copyright:
------------------------
This program is supplied without waranties of any kind. Neither I
(Pierre Perret), nor the author and copyright owner of MicroEMACS
(Daniel M. Lawrence), can be held responsible or liable for any damage
caused by the use of this program.
In short: USE AT YOUR OWN RISK.
(C)Copyright 1988, 1989, 1990, 1991, 1992 by Daniel M. Lawrence
MicroEMACS 3.11 can be copied and distributed freely for any
non-commercial purposes. Commercial users may use MicroEMACS
3.11 inhouse. Shareware distributors may redistribute
MicroEMACS 3.11 for media costs only. MicroEMACS 3.11 can only
be incorporated into commercial software or resold with the
permission of the current author:
Daniel M. Lawrence
617 New York St
Lafayette, IN 47901
------------------------------------------------------------------------